/* @flow */

import * as nodeOps from 'web/runtime/node-ops'
import { createPatchFunction } from 'core/vdom/patch'
import baseModules from 'core/vdom/modules/index'
import platformModules from 'web/runtime/modules/index'

// the directive module should be applied last, after all
// built-in modules have been applied.
const modules = platformModules.concat(baseModules)

// nodeops主要是操作dom的方法，modules主要定义类的一些钩子函数，这些函数在patch过程中被调用
// createPatchFunction src/core/vdom/patch.js文件中
// 传入一个对象，包含了nodeOps和modules参数。
/**
 * @nodeOps: 封装一些dom操作方法
 * @modules：定义一些模块的钩子函数的实现
 */
export const patch: Function = createPatchFunction({ nodeOps, modules })
